#!/usr/bin/env python
# -*- coding:utf-8 -*-

# file:zp_01_reverseStr.py
# author:张世航
# datetime:2025/1/31 17:05
# software: PyCharm
"""
541. 反转字符串 II

给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。

如果剩余字符少于 k 个，则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。


示例 1：

输入：s = "abcdefg", k = 2
输出："bacdfeg"
示例 2：

输入：s = "abcd", k = 2
输出："bacd"


提示：

1 <= s.length <= 104
s仅由小写英文组成
1 <= k <= 104
"""

#1.按步进长度遍历字符串
#2.交换前k个和后k个，并注意交换时对应剩余字符串的情况
# class Solution:
#     def reverseStr(self, s: str, k: int) -> str:
#         s=list(s)
#         n=len(s)
#
#         for i in range(0,n,2*k):
#             left=i
#             right=min(i+k-1,n-1)
#
#             while left<right:
#                 s[left],s[right]=s[right],s[left]
#                 left+=1
#                 right-=1
#         return ''.join(s)


#python可以更简单地完成
class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        s=list(s)
        for i in range(0,len(s),k*2):
            s[i:i+k]=s[i:i+k][::-1]

        return ''.join(s)







